﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using Newtonsoft.Json;
using Jianshu_Research_Tools;

namespace Jianshu_Research_Tools
{
    public class JsonStruct
    {

        /// <summary>
        /// 简书文章结构集
        /// </summary>
        public class Asimov
        {
            //public User GetMyUser() { return this. };

            /// <summary>
            /// 简书文章中的文章集
            /// </summary>
            public class Root
            {
                /// <summary>
                /// 此值是否对当前用户展示广告。请注意：在默认情况下，本值始终为True，因为您不是会员。
                /// </summary>
                public string show_ad { get; set; }
                /// <summary>
                /// 此值指示当前用户是否为作者。请注意：在默认情况下，本值始终为False，因为您未登录任何账号。
                /// </summary>
                public string is_author { get; set; }
                /// <summary>
                /// 我也不确定这具体是个啥，但是在多次测试中，本值均被指示为False。
                /// </summary>
                public string liked_note { get; set; }
                /// <summary>
                /// 此值指示当前文章的评论总量。
                /// </summary>
                public int public_comment_count { get; set; }
                /// <summary>
                /// 此值指示当前文章的精选评论总量。
                /// </summary>
                public int featured_comments_count { get; set; }
                /// <summary>
                /// 此值指示当前文章的总点赞数。
                /// </summary>
                public int likes_count { get; set; }
                /// <summary>
                /// 此值指示当前文章是否为试读模式，可用于判断付费文章。
                /// </summary>
                public string trial_open { get; set; }
                /// <summary>
                /// 这个我也不知道是个啥，可能是内测用的。请注意：此值经常被指示为null，可能影响您的程序解析。
                /// </summary>
                public string wangxin_trial_open { get; set; }
                /// <summary>
                /// 此值指示文章的简介，若无简介，则返回文章的一小段与一个省略号。
                /// </summary>
                public string description { get; set; }
                /// <summary>
                /// 此值用于权限指示，始终为0。
                /// </summary>
                public int gupao_eligible { get; set; }
                /// <summary>
                /// 此值指示本文获钻总数(单位:0.001)。
                /// </summary>
                public int total_fp_amount { get; set; }
                /// <summary>
                /// 此值指示本文在简书的ID。
                /// </summary>
                public int id { get; set; }
                /// <summary>
                /// 此值指示本文在简书中的slug，你可以用https://www.jianshu.com/slug来访问这篇文章。
                /// </summary>
                public string slug { get; set; }
                /// <summary>
                /// 此值指示本文的标题。
                /// </summary>
                public string public_title { get; set; }
                /// <summary>
                /// 此值指示本文的免费内容，在非付费文章中，指示本文的全部内容。
                /// </summary>
                public string free_content { get; set; }
                /// <summary>
                /// 此值指示本文的付费状态。free代表免费，paid代表付费。
                /// </summary>
                public string paid_type { get; set; }
                /// <summary>
                /// 此值指示文章所在的文集ID。
                /// </summary>
                public int notebook_id { get; set; }
                /// <summary>
                /// 此值指示该篇文章是否可以评论。
                /// </summary>
                public string commentable { get; set; }
                /// <summary>
                /// 此值指示该篇文章是否可以转载。
                /// </summary>
                public string reprintable { get; set; }
                /// <summary>
                /// 此值指示本篇文章发布时间。
                /// </summary>
                public string first_shared_at { get; set; }
                /// <summary>
                /// 此值指示该篇文章的总字数。
                /// </summary>
                public int Wordage { get; set; }
                /// <summary>
                /// 该值指示文章是否已经被付费。请注意：在默认情况下，本值始终为False，因为您未登录任何账号。
                /// </summary>
                public string paid_content_accessible { get; set; }
                /// <summary>
                /// 此值指示本篇文章分享图片的Url。
                /// </summary>
                public string share_image_url { get; set; }
                /// <summary>
                /// 此值指示本篇文章是否展示付费提示。
                /// </summary>
                public string show_paid_comment_tips { get; set; }
                //public User user { get; set; }
                /// <summary>
                /// 未知定值，值为24。
                /// </summary>
                public int distribution_more_earn_percent { get; set; }
                /// <summary>
                /// 此值指示本篇文章最后一次修改时间。
                /// </summary>
                public int last_updated_at { get; }
                /// <summary>
                /// 此值指示文章参与的活动Slug。
                /// </summary>
                public string activity_collection_slug { get; }

                /// <summary>
                /// 去除所有可能出现的Null值。
                /// </summary>
                public virtual void ClearNull()
                {

                }

            }
        }


        [Serializable]
        public class JianShuComments
        {
            //public class Member
            //{
            //    public string type { get; set; }
            //    public int expires_at { get; set; }
            //}

            public class User
            {
                public int id { get; set; }
                public string nickname { get; set; }
                public string slug { get; set; }
                //public Member member { get; set; }
                public string avatar { get; set; }
            }

            public class CommentsItem
            {
                public CommentsItem()
                {
                    this.Parent_id = "";
                }

                /// <summary>
                /// 此值指示评论的ID。
                /// </summary>
                public int id { get; set; }
                /// <summary>
                /// 此值指示评论的发布时间。
                /// </summary>
                public string created_at { get; set; }
                /// <summary>
                /// 此值指示评论的具体内容。
                /// </summary>
                public string compiled_content { get; set; }
                /// <summary>
                /// 此值指示评论的楼层。
                /// </summary>
                public int floor { get; set; }
                /// <summary>
                /// [Null?]此值指示父评论ID。
                /// </summary>
                [Attribute.MayNullAble("JsonStruct.Parent_id")]
                public string Parent_id { get; set; }
                /// <summary>
                /// 此值指示评论所含的图片数量。
                /// </summary>
                public int images_count { get; set; }
                //public List<string> images { get; set; }
                /// <summary>
                /// 此值指示评论的获赞量。
                /// </summary>
                public int likes_count { get; set; }
                /// <summary>
                /// 此值指示评论的回复量。
                /// </summary>
                public int children_count { get; set; }
                //public bool liked { get; set; }
                public User user { get; set; }
                //public List<string> children { get; set; }
            }

            public class Root
            {
                public List<CommentsItem> comments { get; set; }
                public int page { get; set; }
                public int total_pages { get; set; }
            }

        }

    }
}
